/**
 * Created by xiongisxiong on 2018/6/4
 * 视频播放器
 */
import React, { PureComponent } from 'react' 
import { StyleSheet } from  'react-native'
import Video from 'react-native-video'

import { tools } from '../utils'

import { connect } from 'react-redux'
import { setPlayVideo } from '../redux/actions'

  class MvPlayer extends PureComponent {
    state = {
      videoUrl: ''
    }
    componentWillReceiveProps(nextProps) {
      const { currentPlayVideo } = this.props;
      const nextCurrentPlayVideo = nextProps.currentPlayVideo;
      console.log('MvPlayer中props改变后的currentPlayVideo：', currentPlayVideo);
      if (currentPlayVideo.fullScreen !== nextCurrentPlayVideo.fullScreen) { // 获取新的播放地址
        this.player.presentFullscreenPlayer() // 将<Video>阻止全屏播放
      }
    }
    /**  */
    onLoad = obj => {
      // obj 加载后的视频信息，自带的
      this.props.dispatch(setPlayVideo({
        duration: obj.duration, // 总秒数
        totalTime: tools.transTime(obj.duration), //将总秒数转化为了总时间类型
        playing: true
      }))
    }
    onProgress = time => {
      const { duration } = this.props.currentPlayVideo;
      this.props.dispatch(setPlayVideo({
        currentTime: tools.transTime(time.currentTime),
        sliderProgress: time.currentTime / duration
      }))
    }
   
    render() {
      const { videoUrl, currentPlayVideo } = this.props;
      return (
          <Video 
              source={{uri: videoUrl, type: 'mp4'}} // Can be a URL or a local file.
              ref={(ref) => {this.player = ref}} // Store reference
              rate={1.0} // 0 is 暂停, 1 is normal. 安卓
              volum={1.0} // 0 is 完全静音, 1 is normal.
              muted={false} // 完全静音
              paused={!currentPlayVideo.playing} // Pauses playback entirely.
              resizeMode='cover' // 以纵横比填充整个屏幕。  安卓
              repeat={false} // 是否永远重复。
              playInBackground // 当应用程序输入背景音频时，音频继续播放。
              playWhenInactive={false} // [iOS]当显示控制或通知中心时，视频继续播放。
              progressUpdateInterval={250.0}  // [iOS] Interval to fire onProgress（默认为 〜250ms ）
              // ignoreSilentSwitch={'ignore'} // [iOS] ignore | 服从 - 当'忽略'时，音频仍然会播放与iOS硬静音开关设置为静音。当“服从”时，音频将切换开关。当未指定时，将照常继承音频设置。
              // onLoadStart={this.loadStart} // 视频开始加载时的回调
              onLoad={this.onLoad} // 视频加载时的回调
              onProgress={this.onProgress} // 每250毫秒〜与currentTime的回调
              // onEnd={this.onEnd} // 播放完成时的回调
              // onError={this.videoError} // 当视频无法加载执行的回调
              // onBuffer={this.onBuffer}  // 视频正在缓冲时回调
              // onTimedMetadata={this.onTimedMetadata} // 当流接收到一些元数据的回调
              style={[{height: 200}, this.props.style]}
          />
      )
    }
    
  } 

  const mapStateToProps = ({currentPlayVideo}) => ({
    currentPlayVideo
  });

export default connect(mapStateToProps)(MvPlayer);